package hk.m4s.lr.repair.test.utils;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.widget.Toast;

import org.json.JSONObject;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.onekeyshare.OnekeyShare;
import framework.common.Constant;
import framework.common.zanetwork.core.ResponseCallback;
import framework.utils.SharedPreferencesUtils;
import hk.m4s.lr.repair.test.R;
import hk.m4s.lr.repair.test.model.AccountModel;
import hk.m4s.lr.repair.test.service.AccountSerive;
import hk.m4s.lr.repair.test.ui.anount.LoginActivity;
import okhttp3.Response;

/**
 * Created by qi.wang on 2017/3/14.
 */

public class ShareUtil {
    public static int shareFlag=-1;
    public static void showShare(final Context context,final String phone,final String title,final String url,final String text,final String imagesUrl) {
        ShareSDK.initSDK(context);
        OnekeyShare oks = new OnekeyShare();
        //关闭sso授权
        oks.disableSSOWhenAuthorize();
        // title标题，印象笔记、邮箱、信息、微信、人人网、QQ和QQ空间使用
        oks.setTitle(title);
        // titleUrl是标题的网络链接，仅在Linked-in,QQ和QQ空间使用
        oks.setTitleUrl(url);
        // text是分享文本，所有平台都需要这个字段
        oks.setText(text);
        //分享网络图片，新浪微博分享网络图片需要通过审核后申请高级写入接口，否则请注释掉测试新浪微博
        if(imagesUrl!=null) {
            oks.setImageUrl(imagesUrl);
        }else{
            copyIcon(context, R.mipmap.ic_icon, "icon");
            File file = MediaFileManager.makeFile(context, "0",
                    "icon");
            oks.setImagePath(file.getAbsolutePath());
        }
        // imagePath是图片的本地路径，Linked-In以外的平台都支持此参数
        //oks.setImagePath("/sdcard/test.jpg");//确保SDcard下面存在此张图片
        // url仅在微信（包括好友和朋友圈）中使用
        oks.setUrl(url);
        // comment是我对这条分享的评论，仅在人人网和QQ空间使用
        oks.setComment("非常好");
        // site是分享此内容的网站名称，仅在QQ空间使用
        oks.setSite(context.getString(R.string.app_name));
        // siteUrl是分享此内容的网站地址，仅在QQ空间使用
        oks.setSiteUrl(url);
        oks.setCallback(new PlatformActionListener() {

            @Override
            public void onError(Platform arg0, int arg1, Throwable arg2) {
                Toast.makeText(context,"分享失败", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onComplete(Platform arg0, int arg1,
                                   HashMap<String, Object> arg2) {
                shareFlag=1;
                Toast.makeText(context,"分享成功",Toast.LENGTH_SHORT).show();
                setShare(context,phone,"2");
            }

            @Override
            public void onCancel(Platform arg0, int arg1) {
                Toast.makeText(context,"分享取消",Toast.LENGTH_SHORT).show();

            }
        });
// 启动分享GUI
        oks.show(context);
       // setShare(context,phone,"1");
    }
    /**
     * 拷贝程序图标到存储卡，用于ShareSDK分享使用
     */
    public static void copyIcon(Context context, int rawId, String path) {
        if (!MediaFileManager.fileExists(context, "0", path)) { // 存储卡不存在就拷贝一个过去
            InputStream is = context.getResources().openRawResource(rawId);
            try {
                byte[] b = new byte[is.available()];
                is.read(b);
                MediaFileManager.writeFile(context, "0", path, b);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public static void setShare(Context context,String phone,String state) {
        Map<String, Object> parmas = new HashMap<>();
        parmas.put("device_type", Constant.device_type);
        parmas.put("token", SharedPreferencesUtils.getSharedPreferences(Constant.token, ""));
        try {
            JSONObject jsondata = new JSONObject();
            jsondata.put("phone",phone);
            jsondata.put("state",state);
            jsondata.put("type","4");
            parmas.put("jsonText", jsondata.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        AccountSerive.setShare(context,parmas, new ResponseCallback<AccountModel>() {
            @Override
            public void onSuccess(AccountModel map) {

            }

            @Override
            public void onError(Response response, int errorCode, String errorMsg, Exception e) {

            }
        });
    }
}
